package com.lkd.shoppingcart.service.impl;

import java.util.List;

import com.lkd.shoppingcart.dao.ProductDao;
import com.lkd.shoppingcart.dao.impl.ProductDaoImpl;
import com.lkd.shoppingcart.entity.Page;
import com.lkd.shoppingcart.entity.Product;
import com.lkd.shoppingcart.service.ProductService;

public class ProductServiceImpl implements ProductService {
	
	private ProductDao productDao = new ProductDaoImpl();

	@Override
	public void addProduct(Product product) {
		productDao.addProduct(product);
	}

	@Override
	public void deleteProductById(Integer id) {
		productDao.deleteProductById(id);
	}

	@Override
	public void updateProduct(Product product) {
		productDao.updateProduct(product);
	}

	@Override
	public Product queryProductById(Integer id) {
		return productDao.queryById(id);
	}

	@Override
	public List<Product> queryProducts() {
		return productDao.queryAll();
	}

	@Override
	public Page<Product> page(int pageNo, int pageSize) {
		Page<Product> page = new Page<Product>();

        // 设置每页显示的数量
        page.setPageSize(pageSize);
        
        // 求总记录数
        Integer totalCount = productDao.queryForTotalCount();
        
        // 设置总记录数
        page.setPageTotalCount(totalCount);
        
        // 求总页码
        Integer pageTotal = totalCount / pageSize;
        if (totalCount % pageSize > 0) {
            pageTotal+=1;
        }
        
        // 设置总页码
        page.setPageTotal(pageTotal);

        // 设置当前页码
        page.setPageNo(pageNo);

        // 求当前页数据的开始索引
        int begin = (page.getPageNo() - 1) * pageSize;
        if (begin < 0) {
        	begin = 0;
        }
        
        // 求当前页数据
        List<Product> items = productDao.queryForPageItems(begin, pageSize);
        
        // 设置当前页数据
        page.setItems(items);

        return page;
	}

	@Override
	public Page<Product> pageByPrice(int pageNo, int pageSize, int min, int max) {
		Page<Product> page = new Page<Product>();

        // 设置每页显示的数量
        page.setPageSize(pageSize);
        
        // 求总记录数
        Integer totalCount = productDao.queryForTotalCountByPrice(min, max);
        
        // 设置总记录数
        page.setPageTotalCount(totalCount);
        
        // 求总页码
        Integer pageTotal = totalCount / pageSize;
        if (totalCount % pageSize > 0) {
            pageTotal+=1;
        }
        
        // 设置总页码
        page.setPageTotal(pageTotal);

        // 设置当前页码
        page.setPageNo(pageNo);

        if (page.getPageNo() != 0) {
        	// 求当前页数据的开始索引
            int begin = (page.getPageNo() - 1) * pageSize;
            
            // 求当前页数据
            List<Product> items = productDao.queryForPageItemsByPrice(begin, pageSize, min, max);
            
            // 设置当前页数据
            page.setItems(items);
        }
        return page;
	}

}
